A typical computer system, such as a personal computer, mobile computer, or personal data assistant, includes several integrated circuits (ICs) that are electrically connected to each other on a printed circuit board (PCB). The ICs communicate with each other via their input/output (IO) ports. The IO ports of one IC are electrically connected to the IO ports of another IC by electrical interconnects formed on the PCB.
To meet consumers' demands for faster computer systems, the speed of communication between ICs on a PCB must increase. One way to increase this communication speed is to move the ICs closer together on the PCB and to shorten the lengths of the electrical interconnects that connect the IO ports of the ICs together. Shortening the electrical interconnects has the effect of not only increasing the speed and reliability of communication between ICs but also reducing the size of the PCB, allowing faster and more compact computer systems to be manufactured. In addition, power consumption is reduced because less power is required to drive the communication signals over a shorter distance between ICs.
The pinout of an IC defines which IO port of the IC is connected to which signal line within the IC. An IO port is an electrical contact of a first IC that is designed to be electrically connected to a second IC for communication (either sending information, receiving information, or both). For an unpackaged IC formed on a semiconductor substrate, an IO port is typically a metal pad. Once packaged, this IO port is typically electrically connected to another IO port on the package such as another metal pad, a metal pin, a solder ball, or other electrical connector. As used herein, ICs and packaged ICs are both referred to as ICs.
One barrier to shortening the electrical interconnects between ICs on a PCB is the pinout configuration of the ICs. If the pinout of an IC is such that an IO port on one side of an IC is to be connected to an IO port on an opposite side of an adjacent IC, the interconnect between the two IO ports must be routed a relatively long distance across the PCB. The length of this interconnect will reduce the speed of communication signals sent across the interconnect between the two IO ports. In addition, this relatively long interconnect complicates the routing of other interconnects that must be routed around it.
One solution is to rotate one of the ICs on the PCB by 180 degrees so that the IO ports that are electrically connected to each other are closer together. Unfortunately, this may complicate the coupling of other IO ports between the two ICs, causing excessive cross-routing of the other interconnects. In addition, rotating one IC with respect to another causes skew problems with signals communicated between the ICs. This is particularly true for parallel signals of a bus. The different interconnect lengths that communicate different bit signals of the bus between the two ICs cause the signals to be communicated at different speeds.
Another solution is to place one IC on top of the PCB and the other IC on the bottom of the PCB directly underneath the first IC. This way the interconnect lengths that connect IO ports on the upper IC to IO ports on the lower IC can be significantly reduced by simply routing the interconnects through the relatively thin PCB. Unfortunately, the same interconnect cross-routing problems are encountered.
For example, assume the upper IC is identical to the lower IC. Once the lower IC is flipped upside-down to be connected to the underside of the PCB, its pinout will no longer be aligned to the pinout of the upper IC. As a result, the interconnects between the two ICs will be unequal in length, leading to skew problems.